home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / c / sozobon / sozlib15.zoo / sozdistr / include / xdlibs / stat.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-03  |  2.8 KB  |  112 lines

  1. /*
  2.  * @(#)stat.h, XdLibs, SozobonX
  3.  * 
  4.  */
  5.  
  6. #ifndef    _STAT_H
  7. #define    _STAT_H
  8.  
  9. #ifndef _TYPES_H
  10. #include <types.h>
  11. #endif
  12. /* 
  13.  * changed by jerry
  14.  * now compatible to standard,
  15.  * stat() now uses fxattr if _mint is set.
  16.  * if _mint is not set, the fields:
  17.  *         st_index, st_uid, st_gid, st_atime, st_ctime
  18.  *         are set to 0;
  19.  *         st_size, st_nblocks is set to -1 for directories
  20.  * though Mint is running these fields mustn't have proper values set!
  21.  * this depends on the filesystem, the file is from.
  22.  */
  23.  
  24.  
  25. struct stat
  26.     {
  27.     unsigned short    st_mode;    /* file mode flags */
  28.     long    st_index;
  29.     dev_t    st_dev;                /* device id (0 == A:) */
  30.     unsigned short    st_nlink;    /* number of links */
  31.     unsigned short    st_uid;        /* owner's user id */
  32.     unsigned short    st_gid;        /*         group id */
  33.     long    st_size;        /* file size in bytes */
  34.     long    st_blksize;        /* size of a block in bytes      */
  35.     long    st_nblocks;        /* no of blocks used    */
  36.     time_t    st_mtime;    /* last modification date/time                 */
  37.     time_t    st_atime;    /*   of course in our XDlibs rawtime format    */
  38.     time_t    st_ctime;
  39.     short    st_attr;        /* GEMDOS file attribs    */
  40. };
  41.  
  42. #define    st_rdev        st_dev        /* drive id */
  43.  
  44. #define    S_IFMT            0170000
  45. #define    S_IFCHR            0020000
  46. #define    S_IFDIR            0040000
  47. #define S_IFBLK            0060000
  48. #define    S_IFREG            0100000
  49. #define S_IFIFO            0120000
  50. #define S_IMEM            0140000
  51. #define    S_IFLNK            0160000
  52.  
  53. #define S_ISCHR(m)        ((m & S_IFMT) == S_IFCHR)
  54. #define S_ISDIR(m)        ((m & S_IFMT) == S_IFDIR)
  55. #define S_ISBLK(m)        ((m & S_IFMT) == S_IFBLK)
  56. #define S_ISREG(m)        ((m & S_IFMT) == S_IFREG)
  57. #define S_ISFIFO(m)        ((m & S_IFMT) == S_IFIFO)
  58. #define S_ISMEM(m)        ((m & S_IFMT) == S_IMEM)
  59. #define S_ISFLNK(m)        ((m & S_IFMT) == S_IFLNK)
  60.  
  61.     /* the values for st_attr    */
  62. #define S_IRWXU            0700
  63. #define S_IRWXG            0070
  64. #define S_IRWXO            0007
  65.  
  66. #define    S_ISUID            04000
  67. #define    S_ISGID            02000
  68. #define    S_ISVTX            01000
  69. /* file access modes for user, group, and other*/
  70. #define S_IRUSR            0400
  71. #define S_IWUSR            0200
  72. #define S_IXUSR            0100
  73. #define S_IRGRP            0040
  74. #define S_IWGRP            0020
  75. #define S_IXGRP            0010
  76. #define S_IROTH            0004
  77. #define S_IWOTH            0002
  78. #define S_IXOTH            0001
  79.  
  80. #define    S_IREAD            S_IRUSR
  81. #define    S_IWRITE        S_IWUSR
  82. #define    S_IEXEC            S_IXUSR
  83.  
  84.     /* supported old constants - soon phased out     */
  85. #define    S_IFHID        0222
  86. #define    S_ISRO        0444
  87. #define    S_ISARC        0666
  88.     /* Gemdos file attributes (st_attr)    */
  89. #ifndef FA_NORMAL
  90. #define    FA_NORMAL    0x00
  91.         /* Fcreate()/Fattrib()/Fsfirst()/Fsnext()    */
  92. #define FA_RDONLY    0x01
  93. #define FA_HIDDEN    0x02
  94. #define FA_SYSTEM    0x04
  95. #define FA_LABEL    0x08
  96.         /* only Fattrib()/Fsfirst/Fsnext:    */
  97. #define FA_DIREC    0x10
  98. #define FA_DIR        0x10
  99. #define FA_ARCH        0x20
  100. #define FA_CHANGED    0x20
  101. #endif
  102.  
  103. int chmod(char *filename, int pmode);
  104. int mkdir(char *pathname);
  105. int stat(char *name, struct stat *statbuf);
  106.  
  107. /* not a standard function */
  108. extern long size(char *name);    /* former called fsize    */
  109.  
  110.  
  111. #endif     /* _STAT_H    */
  112.